package com.luoqian.demo03;

import java.lang.reflect.Method;

/**
 *  对类中的方法操作
 */
public class Methods_Practice {

    public static void main(String[] args) throws Exception {
        User user = new User();
        Class<? extends User> clazz = user.getClass();
        //getMethods 可以获取当前类及其弗雷中所有的其公有的方法
        Method[] methods = clazz.getMethods();
        for (Method m:methods ) {
            System.out.println(m.getModifiers()+ " -"+  m.getName() );
        }

        System.out.println("========");
        //可以获取本类中的所有方法 包括私有的
        Method[] declaredMethods = clazz.getDeclaredMethods();
        for (Method m: declaredMethods) {
            System.out.println(m.getModifiers()+ " -"+  m.getName() );
        }

        Method jump = clazz.getDeclaredMethod("jump");
        jump.setAccessible(true);
        jump.invoke(user);
        //静态方法的调用
        Method say = clazz.getDeclaredMethod("say", String.class);
        say.invoke(null,"hello");

    }

}
